package ws.server;

import jakarta.servlet.http.HttpSession;
import jakarta.websocket.HandshakeResponse;
import jakarta.websocket.server.HandshakeRequest;
import jakarta.websocket.server.ServerEndpointConfig;
import ws.entity.ChatInfo;

/**
 * @Author gjh
 * @Date 2025/9/18
 * @Description:
 * 握手处理器
 * 在握手时获取servlet环境下的对象信息
 * （如：HttpSession , HttpRequest等）
 * 并将这些数据保存到websocket的session对象中
 */
public class HandshakeHandler extends ServerEndpointConfig.Configurator {

    /**
     * 重写握手对象
     * @param sec
     * @param request servlet中的请求对象
     * @param response servlet中的响应对象
     */
    @Override
    public void modifyHandshake(ServerEndpointConfig sec, HandshakeRequest request, HandshakeResponse response) {
        HttpSession httpSession = (HttpSession) request.getHttpSession();
        ChatInfo chatInfo = (ChatInfo) httpSession.getAttribute("chatInfo");
        if(chatInfo != null){
            sec.getUserProperties().put("chatInfo", chatInfo);
        }
    }
}
